# -*- coding: utf-8 -*-

"""
DateTime   : 2020/12/20 16:10
Author     : ZhangYafei
Description: 
"""


class Student:
    """学生"""

    def __init__(self, name, age):
        """初始化方法"""
        self.name = name
        self.age = age

    def study(self, course_name):
        """学习"""
        print(f'{self.name}正在学习{course_name}.')

    def play(self):
        """玩耍"""
        print(f'{self.name}正在玩游戏.')

    # def __repr__(self):
    #     return f'repr {self.name}: {self.age}'

    def __str__(self):
        return f'str {self.name}: {self.age}'



stu1 = Student('张亚飞', 20)
print(stu1)  # str 张亚飞: 20
print(str(stu1), repr(stu1))  # str 张亚飞: 20 repr 张亚飞: 20
# 另外，列表以及字典等容器总是会使用 __repr__ 方法。即使你显式的调用 str 方法，也是如此。
students = [stu1, Student('小明', 16), Student('李云龙', 30)]
# 如果我们需要显示的指定以何种方式进行类到字符串的转化，我们可以使用内置的 str() 或 repr() 方法，它们会调用类中对应的双下划线方法。
print(students)  # [repr 张亚飞: 20, repr 小明: 16, repr 李云龙: 30]
